package com.core.family.admin.service;


import com.core.family.admin.domain.po.PlatStorage;
import lombok.SneakyThrows;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author hl
 * @version 1.0.0
 * @ClassName IStorageDbService.java
 * @Description 类描述  文件存储数据库记录
 * @createTime 2023年05月05日 10:56:00
 */
public interface PlatStorageService {



    public PlatStorage createTempMate(InputStream inputStream, String fileSuffixName);

    PlatStorage createTempMate(byte[] data, String fileSuffixName);



    /****
     * 保存文件
     * @param data
     * @param fileSuffixName
     * @return
     */
    default PlatStorage saveOrUpdate(byte[] data, String fileSuffixName){
        InputStream stream= new ByteArrayInputStream(data);
        return saveOrUpdate(stream,data.length,fileSuffixName);
    }


    /***
     * 新增或更新文件
     * @param inputStream   文件输入流
     * @param contentLength 文件长度
     * @param keyName       文件名包含后缀
     * @return
     */

    PlatStorage saveOrUpdate(InputStream inputStream, long contentLength, String keyName);

    /***
     * 新增文件
     * @param inputStream   文件输入流
     * @param keyName       文件名包含后缀
     * @return
     */
    PlatStorage create(InputStream inputStream,String keyName) throws IOException;








    boolean removeById(Long id);


    boolean removeByMd5(String md5);

    /**
     * 查询
     * @param fileLogicMate
     * @return
     */
    List<PlatStorage> getBy(PlatStorage fileLogicMate);

    PlatStorage getByMd5(String id);

    PlatStorage getById(int id);







}
